package com.dmwork.service.interaction.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dmwork.service.interaction.entity.WorkComment;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dmwork.service.interaction.entity.vo.CommentMessageVo;
import com.dmwork.service.interaction.entity.vo.WorkCommentMessageVo;

import java.util.Collection;
import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 作品评论表 服务类
 * </p>
 *
 * @author 李天
 * @since 2021-04-25
 */
public interface WorkCommentService extends IService<WorkComment> {

    /**
     * 获取对作品的评论的分页
     * @param workId 作品id
     * @param sortType
     * @param page 页数
     * @param limit 每页记录数
     * @return 分页
     */
    Page<WorkComment> getCommentPage(String workId, Integer sortType, Integer page, Integer limit);

    /**
     * 获取指定的作品评论下的多条回复评论
     * @param commentId 作品评论id
     * @param sortType
     * @param page 页数
     * @param limit 每页记录数
     * @return 分页
     */
    Page<WorkComment> getReplyPage(String commentId, Integer sortType, Integer page, Integer limit);

    /**
     * 获取他人回复自己评论的消息
     * @param commentIdList //评论id列表，数据以其为顺序
     * @return
     */
    List<WorkCommentMessageVo> getReplyMessageList(List<String> commentIdList);

    /**
     * 指定评论的点赞数量-1
     * @param commentId 评论id
     */
    void decreaseLikeCount(String commentId);

    /**
     * 指定评论的点赞数量+1
     * @param commentId 评论id
     */
    void increaseLikeCount(String commentId);

    /**
     * 获取并组装出作品评论消息列表数据
     * @param workCommentIdList 作品评论id列表
     * @return 评论消息列表
     */
    List<CommentMessageVo> getCommentMessageList(List<String> workCommentIdList);
}
